﻿using System;

namespace Sherwood.Content
{
    /// <summary>
    /// Represents a piece of meta information attached to a <see cref="IRecord">Record</see>.
    /// </summary>
    public interface IMeta
    {
        /// <summary>
        /// A globally unique identifier for this meta instance.
        /// </summary>
        Guid Id { get; }

        /// <summary>
        /// Can be used to distinguish between multiple metas of same type.
        /// </summary>
        /// <example>
        /// A text meta could exist for Body and Summary, and the Keys could then be Body and Summary.
        /// </example>
        string UsageKey { get; set; }

        /// <summary>
        /// The content for which this is a meta part.
        /// </summary>
        IRecord Record { get; }

        /// <summary>
        /// The source client of this meta item.
        /// </summary>
        IClient Client { get; }
        
        /// <summary>
        /// The date the content entry is created in this system.
        /// </summary>
        DateTime DateCreated { get; }

        /// <summary>
        /// Last modification date of this object.
        /// </summary>
        DateTime DateModified { get; }
    }
}